package ar.com.algotres.tpdos.model.aviones;

import ar.com.algotres.tpdos.model.controlador.ITorreDeControl;
import ar.com.algotres.tpdos.model.fisica.Movimiento;
import ar.com.algotres.tpdos.model.fisica.Posicion;
import ar.com.algotres.tpdos.model.fisica.Trayectoria;
import ar.com.algotres.tpdos.model.fisica.Velocidad;

public class FabricaAviones {
	
	
	
	public FabricaAviones() {
	}

	public static Avion makeAvionComputarizado(ITorreDeControl torreDeControl, Velocidad velocidad) {
		Posicion posicionInicial = torreDeControl.getMapa().randomPosicionEnLimiteDerecho();
		Posicion posicionFinal = torreDeControl.getMapa().randomPosicion();
		Trayectoria trayectoria = new Trayectoria(posicionInicial, posicionFinal);
		Movimiento movimiento = new Movimiento(velocidad, trayectoria);
		
		return new AvionComputarizado(torreDeControl, movimiento, posicionInicial);
	}
	
	public static Avion makeAvionSimple(ITorreDeControl torreDeControl, Velocidad velocidad) {
		Posicion posicionInicial = torreDeControl.getMapa().randomPosicionEnLimiteSuperior();
		Posicion posicionFinal = torreDeControl.getMapa().randomPosicion();
		Trayectoria trayectoria = new Trayectoria(posicionInicial, posicionFinal);
		Movimiento movimiento = new Movimiento(velocidad, trayectoria);
		
		return new AvionSimple(torreDeControl, movimiento, posicionInicial);
	}
	
	public static Avion makeAvionPesado(ITorreDeControl torreDeControl, Velocidad velocidad) {
		Posicion posicionInicial = torreDeControl.getMapa().randomPosicionEnLimiteIzquierdo();
		Posicion posicionFinal = torreDeControl.getMapa().randomPosicion();
		Trayectoria trayectoria = new Trayectoria(posicionInicial, posicionFinal);
		Movimiento movimiento = new Movimiento(velocidad, trayectoria);
		
		return new AvionPesado(torreDeControl, movimiento, posicionInicial);
	}
	
	public static Avion makeAvionHelicoptero(ITorreDeControl torreDeControl) {
		Velocidad velocidad = new Velocidad(1);
		Posicion posicionInicial = torreDeControl.getMapa().randomPosicionEnLimiteInferior();
		Posicion posicionFinal = torreDeControl.getMapa().randomPosicion();
		Trayectoria trayectoria = new Trayectoria(posicionInicial, posicionFinal);
		Movimiento movimiento = new Movimiento(velocidad, trayectoria);
		
		return new AvionHelicoptero(torreDeControl, movimiento, posicionInicial);
	}
	
}
